package com.yuntian.mapper;

import com.yuntian.entity.ProductMaster;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * 商品マスタMapper（注解方式）
 */
@Mapper  // 标记为MyBatis Mapper，被Spring扫描
public interface ProductMasterMapper {

    /**
     * 根据商品コード查询商品信息（含在庫数和商品名）
     * @param code 商品コード（M00201）
     * @return 商品实体类
     */
    @Select("SELECT M00201, M00202, M00207 FROM M002 WHERE M00201 = #{code}")
    // 结果映射：数据库字段 -> 实体类属性（因字段名与属性名一致，可简化）
    @Results({
            @Result(column = "M00201", property = "M00201"),  // 商品コード（主キー）
            @Result(column = "M00202", property = "M00202"),  // 商品名（前端需要）
            @Result(column = "M00207", property = "M00207")   // 在庫数（前端需要）
            // 其他字段如需使用，可继续添加@Result映射


    })

    ProductMaster selectByCode(@Param("code") String code);



    /**
     * 根据商品代码查询商品信息（包括库存数）
     * @param productCode 商品代码（M00201）
     * @return 商品实体（包含商品名、库存数等）
     */
    @Select("SELECT * FROM M002 WHERE M00201 = #{productCode}")
    ProductMaster selectByProductCode(@Param("productCode") String productCode);

    /**
     * 更新商品库存数
     * @param shouhinCode 商品代码（M00201）
     * @param newStock 新库存数（更新后的M00207）
     */
    @Update("UPDATE M002 SET M00207 = #{newStock} WHERE M00201 = #{shouhinCode}")
    void updateStock(
            @Param("shouhinCode") String shouhinCode,
            @Param("newStock") Integer newStock
    );
    /**
     * 查询所有商品信息（包括商品代码、商品名、库存数）
     * @return 商品列表（包含商品代码、商品名、库存数等）
     */
    @Select("SELECT * FROM M002") // 假设商品表名为M002
    List<ProductMaster> selectAll();

}